package com.vhall.component.entity.inav.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.vhall.component.entity.goods.vo.SearchGoodsResponseVO;
import com.vhall.component.entity.pendant.vo.PendantRspVO;
import com.vhall.component.entity.room.dto.WhiteFileDTO;
import com.vhall.component.entity.room.vo.AnchorRoomLkDTO;
import com.vhall.component.entity.room.vo.InvestRefResponseVO;
import com.vhall.component.entity.room.vo.RoomsEntityGuoXinVO;
import com.vhall.component.entity.subject.enums.StatusEnum;
import com.vhall.component.framework.common.annotation.ParamName;
import com.vhall.component.plugin.common.constant.RoomConstant;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * @author rui.zhou
 * @date 2021/4/23 16:23
 */
@Data
public class InavRoomGetRespVO extends RoomsEntityGuoXinVO implements Serializable {
    /**
     * 房间id
     */
    @JsonProperty("il_id")
    private Integer ilId;
    /**
     * PAAS直播房间id
     */
    @JsonProperty("room_id")
    private String roomId;

    @ApiModelProperty(value = "频道id")
    @ParamName("page_channel_id")
    @JsonProperty("page_channel_id")
    private Integer pageChannelId;
    /**
     * 房间标题
     */
    private String subject;
    /**
     * 用户id
     */
    @JsonProperty("account_id")
    private Long accountId;
    /**
     * PAAS互动房间id
     */
    @JsonProperty("inav_id")
    private String inavId;
    /**
     * PAAS频道ID'
     */
    @JsonProperty("channel_id")
    private String channelId;
    /**
     * PAAS通知频道ID
     */
    @JsonProperty("nify_channel")
    private String nifyChannel;
    /**
     * 默认回放id
     */
    @JsonProperty("record_id")
    private String recordId;
    /**
     * 预计开始时间
     */
    @JsonProperty("start_time")
    private LocalDateTime startTime;
    /**
     * 直播介绍
     */
    private String introduction;
    /**
     * 所属列表
     */
    private Integer category = RoomConstant.DEFAULT_ZERO;
    /**
     * 封面图片地址
     */
    @JsonProperty("cover_image")
    private String coverImage;
    /**
     * 标签信息
     */
    private List<TagVO> topics;
    /**
     * 布局
     * 1|为单视频,2|音频+文档,3|文档+视频
     */
    private Integer layout = RoomConstant.DEFAULT_ZERO;
    /**
     * 状态
     * 0|待直播/预约,1|直播中,2|直播结束
     */
    private Integer status = RoomConstant.DEFAULT_ZERO;
    /**
     * 是否删除
     * 0|否,1|是
     */
    @JsonProperty("is_delete")
    private Integer isDelete = RoomConstant.DEFAULT_ZERO;
    /**
     * 聊天审核 1允许 2阻止
     */
    @JsonProperty("message_approval")
    private Integer messageApproval;

    @JsonProperty("created_at")
    private LocalDateTime createdAt;

    @JsonProperty("updated_at")
    private LocalDateTime updatedAt;
    /**
     * paasAppId
     */
    @JsonProperty("app_id")
    private String appId;
    /**
     * 直播类型 1 互动直播 2 纯直播
     */
    @JsonProperty("live_type")
    private Integer liveType = RoomConstant.DEFAULT_ZERO;
    /**
     * 点赞数
     */
    private Integer like = RoomConstant.DEFAULT_ZERO;
    /**
     * 暖场类型
     * 0：图片 1：视频
     */
    @JsonProperty("warm_type")
    private Integer warmType = RoomConstant.DEFAULT_ZERO;
    /**
     * 暖场视频id
     */
    @JsonProperty("warm_vod_id")
    private String warmVodId;
    /**
     * 模式
     * 1|助理模式,0|普通模式
     */
    private Integer mode = RoomConstant.DEFAULT_ZERO;
    /**
     * 开启文档
     * 0|未开启,1|已开启
     */
    @JsonProperty("is_open_document")
    private Integer isOpenDocument = RoomConstant.DEFAULT_ZERO;
    /**
     * 观看限制类型
     * 0:登录 1:报名 2:默认 3:白名单
     */
    @JsonProperty("limit_type")
    private Integer limitType = RoomConstant.DEFAULT_ZERO;
    /**
     * 开始时间时间戳
     */
    @JsonProperty("begin_time_stamp")
    private Long beginTimeStamp;

    @JsonProperty("deleted_at")
    private String deletedAt;
    /**
     * 讲师名称
     */
    @JsonProperty("teacher_name")
    private String teacherName;
    /**
     * 直播开始时间
     */
    @JsonProperty("begin_live_time")
    private LocalDateTime beginLiveTime;
    /**
     * 直播结束时间
     */
    @JsonProperty("end_live_time")
    private LocalDateTime endLiveTime;
    /**
     * 直播模式
     */
    @JsonProperty("live_mode")
    private Integer liveMode = RoomConstant.DEFAULT_ZERO;
    /**
     * 聊天总数
     */
    @JsonProperty("message_total")
    private Integer messageTotal = RoomConstant.DEFAULT_ZERO;
    /**
     * 配置扩展
     */
    private String extend;

    private Long phone;

    @JsonProperty("form_id")
    private String formId;

    @JsonProperty("accs_type")
    private Integer accsType = RoomConstant.DEFAULT_ZERO;

    @JsonProperty("is_visitor")
    private Integer isVisitor = RoomConstant.DEFAULT_ZERO;

    private String name;

    private String desc;

    private String image;

    @JsonProperty("view_url")
    private String viewUrl;

    @JsonProperty("watch_url")
    private String watchUrl;

    @JsonProperty("status_str")
    private String statusStr;

    @JsonProperty("live_room_type_str")
    private String liveRoomTypeStr;
    /**
     * 预计开始时间
     */
    @JsonProperty("begin_time")
    private LocalDateTime beginTime;
    /**
     * 处理暖场信息
     */
    @JsonProperty("warm_info")
    private Map warmInfo;

    private Integer enroll;
    /**
     * 房间与主播关联信息
     */
    @JsonProperty("anchor_infos")
    private List<AnchorRoomLkDTO> anchorInfos;
    /**
     * 审核意见
     */
    @JsonProperty("audit_note")
    private String auditNote;
    /**
     * 审核状态
     */
    @JsonProperty("audit_status")
    private Integer auditStatus;

    /**
     * 分享简介
     */
    @JsonProperty(value = "share_introduction")
    @ParamName(value = "share_introduction")
    private String shareIntroduction;

    /**
     * 直播横竖屏 1横 2竖
     */
    @JsonProperty("video_type")
    @ParamName("video_type")
    private Integer videoType;

    /**
     * 曝光海报
     */
    @ParamName("poster_url")
    @JsonProperty("poster_url")
    private String posterUrl;

    /**
     * 设为热点标记位
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("hot_status")
    @ParamName("hot_status")
    private Integer hotStatus;

    /**
     * 推荐到优理宝首页标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("recommended_status")
    @ParamName("recommended_status")
    private Integer recommendedStatus;

    /**
     * 上下架标记，0 关、没上架，1开、上架
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("load_or_unload")
    @ParamName("load_or_unload")
    private Integer loadOrUnload;

    /**
     * 置顶标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("top_status")
    @ParamName("top_status")
    private Integer topStatus;

    /**
     * 预约标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("reservation_status")
    @ParamName("reservation_status")
    private Integer reservationStatus;

    /**
     * 评论标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("comment_status")
    @ParamName("comment_status")
    private Integer commentStatus;

    /**
     * 点播id
     */
    @ParamName("demand_vod_id")
    @JsonProperty("demand_vod_id")
    private String demandVodId;

    /**
     * 点播id
     */
    @ParamName("select_video_data")
    @JsonProperty("select_video_data")
    private SelectVideoData selectVideoData;

    /**
     * 审核人
     */
    @JsonProperty("reviewer")
    @ParamName("reviewer")
    private Integer reviewer;

    /**
     * 审核人
     */
    @JsonProperty("reviewer_name")
    @ParamName("reviewer_name")
    private String reviewerName;

    /**
     * 挂件信息
     */
    @JsonProperty("pendants")
    @ParamName("pendants")
    private List<PendantRspVO> pendants;

    /**
     * 关联的商品信息
     */
    @JsonProperty("goods")
    @ParamName("goods")
    private List<SearchGoodsResponseVO> goods;

    /**
     * 上架时间
     */
    @JsonProperty("load_or_unload_at")
    @ParamName("load_or_unload_at")
    private LocalDateTime loadOrUnloadAt;

    /**
     * 置顶时间
     */
    @JsonProperty("top_status_at")
    @ParamName("top_status_at")
    private LocalDateTime topStatusAt;
    /**
     * 投资依据信息
     */
    @JsonProperty("invest_ref_list")
    @ParamName("invest_ref_list")
    private List<InvestRefResponseVO> investRefList;
    /**
     * 白名单文件信息
     */
    @JsonProperty("white_file_info")
    @ParamName("white_file_info")
    private WhiteFileDTO whiteFileInfo;

}
